#include "Http.h"
#include <iostream>
#include <istream>
#include <sstream>

Http::Http(Socket* socket) {
	this->socket = socket;
}

Http::~Http() {
}

HttpRequest* Http::listenToClient() {
	std::string buffer;
	unsigned int posicion;
	bool seguir = true;
	HttpRequest *request = NULL;

	while (seguir) {
		seguir = this->socket->recvToString(buffer);
		posicion = buffer.find(EOF_HTTP);
		//std::cout << "%%" << seguir << std::endl;

		if (!seguir)
			this->socket->close();

		if ((posicion == std::string::npos) && (seguir)) { //existe..
			//std::cout << buffer;
			request = new HttpRequest(buffer);
			//std::cout << "LLego al fin" << std::endl;
			seguir = false;
			buffer.clear();
		} //else {
		//std::cout << "+::+" << seguir << buffer;
		//buffer.clear();
		//}
	}

	return request;
}

void Http::enviar(HttpResponse* response) {
	std::string respuesta;
	std::stringstream ss;

	//	if (response->contador == 0) {
	respuesta = response->resultado;
	std::cout << "Enviando: " << std::endl;
	this->socket->send(respuesta.c_str(), respuesta.length());
	std::cout << "Termine de eviar" << std::endl;
	//	} else {
	//		std::string	resultado = "HTTP/1.0 200 OK\nDate: Fri, 31 Dec 1999 23:59:59 GMT\nContent-Type: image/jpeg\n";
	//		ss << response->contador;
	//		resultado.append("Content-Length:" + ss.str() + "\r\n\r\n");
	//		this->socket->send(resultado.c_str(), resultado.length());
	//
	//		//respuesta = response->resultado;
	//		std::cout << "Enviando Img: " << std::endl;
	//		this->socket->send(response->buffer, response->contador);
	//		std::cout << "Termine de eviar" << std::endl;
	//	}
}
